package com.cskaoyan.javase.other._1packaging;

/**
 * 包装类型和它对应基本数据类型元素的使用特点:
 *      在大多数情况下,可以混用,可以互相使用
 *
 * 之所以可以这样,是因为在底层存在"自动装箱/拆箱机制"
 * 装箱: 基本数据类型-->包装类型 是装箱
 *      所以的装箱都依赖与底层自动调用valueOf()方法
 *
 * 拆箱: 包装类型 --> 基本数据类型 是拆箱
 *      所以的拆箱都依赖于底层自动调用xxxValue()方法
 * 以上这个过程,在大多数情况下,代码中是可以自动完成的
 *
 * 当然也有不能混用的情况
 * 比较典型的不能混用的情况就是集合，集合只能存储对象，不能存储基本数据类型变量。
 * 所以集合当中的包装类型以及它的对应基本数据类型，就是不能混用的！
 *
 * @since 11:30
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) {
        int a = 10;
        Integer b = 10;
        int c = b;
        // 装箱和拆箱过程的演示
        // Unnecessary boxing 'Integer.valueOf(10)'
        Integer in = Integer.valueOf(10);

        // Unnecessary unboxing 'in.intValue()'
        int d = in.intValue();

        int[] arr = {1, 123, 12, 3, 12, 312, 3, 12, 3};
        arr = null;
        arr = new int[0];
        System.out.println(getMax(arr));
    }

    // 求int数组中,元素中的最大值
    public static Integer getMax(int[] arr) {
        if (arr == null || arr.length == 0) {
            System.out.println("数组不正常,请重新输入!");
            return null;
        }
        int max = arr[0];
        for (int ele : arr) {
            if (ele > max) {
                max = ele;
            }
        }
        return max;
    }
}
